from unicodedata import digit


class Solution(object):
    def sumDigitDifferences(self, nums):
        """
        你有一个数组 nums ，它只包含 正 整数，所有正整数的数位长度都 相同 。

两个整数的 数位不同 指的是两个整数 相同 位置上不同数字的数目。

请你返回 nums 中 所有 整数对里，数位不同之和。
        :type nums: List[int]
        :rtype: int
        """

#思路：先将数组nums分成数字对的形式---两个循环
#构造对比位数函数
#遍历数字对数组调用对比函数
    def __init__(self,nums):
        self.nums =  nums

    #对比数字对
    def contrast(self,num_pairs :list):
        dif_digit = 0
        len_list = len(num_pairs)
        len_int = len(str(num_pairs[0]))
        if len_list !=2:
            print('数字对格式错误')
        else:
            num1 = str(num_pairs[0])
            num2 = str(num_pairs[1])
            for i in range(len_int):
                if num1[i] != num2[i]:
                    dif_digit += 1
        return dif_digit


        #切分数组成为数字对
    def split_array(self):
        n = len(self.nums)
        new_list :list = []
        for i in range(n-1):
            #nums的第i个元素和第j个元素组成数字对
            for j in range(i+1,n):
                new_list.append([self.nums[i],self.nums[j]])
        return new_list

    def final_digit(self):
        dg = 0
        new_list = self.split_array()
        for x in new_list:
            dg += self.contrast(x)
        return dg


# if __name__ == '__main__':
#     test_data = input()
#     test_data = test_data.strip('[]')
#     test_data  = list(map(int,test_data.split(',')))
#     test = Solution(test_data)
#     print(test.final_digit())



class Solution:
    def sumDigitDifferences(self, nums :list[int]) -> int:

    #定义数位差，当整个每个数的同一个数位，以个位为例，将此数位的数量记录起来为为x ，对于所有数字的个位来说吗，取其他数的数量为n - x ，n为数组长度，即有n个个位
    #那么x*（n-x）就算对于x来说的，有不同的组合，对于个位来说，其他数字也同理，如个位有3，4，5各一个，那么不同的有1*2+1*2+1*2 = 6因为3与5不同和5与3不同算一个，所有还有除以2

        n = len(nums)
        digit: int = 0
        j = 0
        while nums[0]>0 :
            single_digit = 0
            cant = [0] * 10
            for i in range(n):
                cant[nums[i]%10]+=1
                nums[i] = nums[i] // 10
            for i in cant:
                single_digit  +=  i * (n - i)

            digit += single_digit
        return int(digit/2)

if __name__ == '__main__':
    test = Solution()
    print(test.sumDigitDifferences([13,23,12]))










































